package com.zyf;

import java.util.Scanner;

/**
 * 1 正数反转
 * 给出一个 32 位 的有符号整数,你需要将这个整数中每位上的数字进行反转

思路 : 
判断数字是正数还是负数
转换为字符串,如何把数字转字符串(+)  “”+123;
字符串有 length() 方法  是字符串的长度
charAt(index) 根据下标获取字符串上对应的字符
循环遍历字符串,倒着把每位取出,拼接到另一个字符串中
循环结束,就反转了
需要注意负数符号,如果是负数,遍历的时候 不要 - 负数符号

由于方法返回肯定是整型,所以 需要我们把拼接的反转之后的字符串转换为int类型(自己百度)
如果是负数,把转换之后int值 * -1 返回  如果不是负数 直接返回 转换之后的int值 即可


示例 1 
输入 :  123
输出 :  321
示例 2
输入 :  -123
输出 :  -321
示例 3 
输入 :  120
输出 :  21


 * @author lenovo
 * @Date 2020年7月2日
 * @Time 下午12:18:30
 */
public class _01_positiveInversion {

	public static void main(String[] args) {
		System.out.println("请输入一个32 位 的有符号整数 :");
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		System.out.println("反转后的数字是 : "+inversion(n));
	}
	/**
	 * 反转算法
	 * @param n
	 * @return 一个整数
	 * 
	 * 思路 : 
	 * 判断数字是正数还是负数
	 * 转换为字符串,如何把数字转字符串(+)  “”+123;
	 * 字符串有 length() 方法  是字符串的长度
	 * charAt(index) 根据下标获取字符串上对应的字符
	 * 循环遍历字符串,倒着把每位取出,拼接到另一个字符串中
	 * 循环结束,就反转了
	 * 需要注意负数符号,如果是负数,遍历的时候 不要 - 负数符号
	 * 由于方法返回肯定是整型,所以 需要我们把拼接的反转之后的字符串转换为int类型(自己百度)
	 * 如果是负数,把转换之后int值 * -1 返回  如果不是负数 直接返回 转换之后的int值 即可
	 */
	public static int inversion(int n) {
		int num = n;
		//将整数n转化为字符串
		String s1 = String.valueOf(n);
		char c ;
		//s3用来接收反转后的字符串
		String s3 = new String();
		for (int i = 0; i < s1.length(); i++) {
			//c用来获取s3的最后一个字符
			c = s1.charAt(s1.length()-1-i);
			if (c == '-') {
				break;
			}else {
				s3 +=c;
			}
		}
		//m用来将s3转化为整数,如果num小于0,就将m×-1
		int m = Integer.valueOf(s3);
		if (num < 0) {
			return m * (-1);
		}else {
			return m;	
		}
	}
}
